package edu.hunau.cxb18.orm.mapper;

import edu.hunau.cxb18.orm.pojo.User;
import edu.hunau.cxb18.orm.pojo.UserQuery;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author hb
 * @create 2020-02-26 09:58
 */
public interface UserMapper {

    /**
     * 新增用户同时返回该用户的主键值
     * @param user
     * @return
     */
    public void insertUser(User user);

    public void deleteByUserName(User user);

    /**
     *
     * @param id 为参数提供一个命名
     */
    public void deleteById(@Param("id") Integer id);

    public void insertUsers(List<User> users);


    public void updatePwd(@Param("id") Integer id,@Param("pwd") String newpwd);

    public void updateUserById(User user);

    /**
     * 根据用户编号查询用户信息
     * @param id
     * @return
     */
    public User queryById(@Param("id") Integer id);

    public User queryByUsernameAndPwd(@Param("username") String username,@Param("pwd") String pwd);

    public User queryByMap(Map map);

    /**
     * 根据提供的一个查询对象查询数据
     * @param query
     * @return
     */
    public User queryByUserQuery(UserQuery query);

    /**
     * 根据用户名进行模糊查询
     * @param name
     * @return
     */
    public List<User> queryByLikeName(@Param("name")String name);

    /**
     * 根据用户编号，同时级联查询出订单信息
     * @return
     */
    public User queryByIdCascadeOrders(int id);

    public User queryByIdCascadeOrdersByOneSql(int id);



}
